package setup

import (
	"fmt"
	"os"

	"github.com/gin-gonic/gin"
)

// 执行命令行参数, 如果返回True则表示不向后执行, 退出程序, 不启动服务
func RunCmdEnd() (isStop bool) {
	// 默认不向后执行
	isStop = true
	// 获取命令行参数
	args := os.Args[1:]

	// 检查是否有参数传递, 没有参数的情况,直接退出不进行操作
	if len(args) == 0 {
		return false
	}

	fmt.Println(args)

	// 遍历参数  进行操作
	for _, arg := range args {
		switch arg {
		case "migrate":
			// 同步数据结构
			Migrate()
			return
		case "init":
			// 初始化项目
			// 先执行migrate, 同步数据库
			Migrate()
			// 初始化一个默认用户
			InitUser()
			return
		case "help":
			showHelp()
			return
		case "release":
			gin.SetMode(gin.ReleaseMode)
			return true
		default:
			fmt.Printf("Unknown command: %s\n", arg)
			return true
		}
	}
	return false
}

func showHelp() {
	fmt.Println("Usage: go run main.go [command]")
	fmt.Println("  init: migrate database and create a default user")
	fmt.Println("  migrate: Execute migration")
	fmt.Println("  release: Set gin mode to release")
	fmt.Println("  help: Show help information")
}
